home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1035 / 1035.xpi / chrome / 1clickweather.jar / content / 1clickweather / js / trackingsystem.js < prev   
Text File  |  2009-12-30  |  4KB  |  162 lines

  1. /* 2007 The Weather Channel Interactive, Inc.  All Rights Reserved.
  2.  * 
  3.  * This is the tracking system javascript file
  4.  * 
  5.  */ 
  6.  
  7. function weather_trackingSystem(){
  8.     
  9.     /*
  10.     * product_id
  11.     * 
  12.     * Identify the service
  13.     */
  14.      this.product_id = 17;
  15.  
  16.      /* action_id
  17.       * 
  18.       * Valid values are: 
  19.       *     - 1 for First Time Logging Tag (FTL tag).
  20.       *     - 2 Daily Active User tag. Throwing every 24 hours (it is throw at startup also).
  21.       *     - 4 Disable (unninstall) toolbar extension
  22.       */    
  23.      this.action_id = 0; 
  24.  
  25.     /*     
  26.      * rnd 
  27.      * This is the caching busting parameter
  28.      *
  29.      */
  30.     this.rnd = 0;
  31.  
  32.  
  33.     /*
  34.      * uniqueUserIdUrl
  35.      * 
  36.      * This is the url when the service get the unique user id
  37.      */
  38.     this.uniqueUserIdUrl = "https://auth.weather.com/weather/installid/";
  39.     
  40.     /*
  41.      * tracking url
  42.      */
  43.     this.trackingUrl = "http://x.imwx.com/";
  44.         
  45.     /*
  46.      * getUniqueUserId()
  47.      * 
  48.      * This method get the unique user id for this user.
  49.      */
  50.     this.getUniqueUserId = function(){
  51.  
  52.         var req = new XMLHttpRequest();
  53.         
  54.         req.open('GET', this.uniqueUserIdUrl, true);
  55.         req.onreadystatechange = function (aEvt) {
  56.             if (req.readyState == 4) {
  57.                 if(req.status == 200){
  58.                     // get node
  59.                       var node = req.responseXML.getElementsByTagName("id")[0].childNodes;
  60.                       
  61.                       // save user id
  62.                       GlobalUserConfig.getInfo().setUserId(node[0].nodeValue);
  63.                       GlobalUserConfig.save();
  64.                       //alert("[DEBUG]-unique user id from getUniqueUserId:" + GlobalUserConfig.getInfo().getUserId());
  65.                 }
  66.               }
  67.         };
  68.         req.send(null); 
  69.     }
  70.     
  71.     /*
  72.      * calculateRandomNumber
  73.      */
  74.     this.calculateRandomNumber = function(){
  75.         
  76.         return Math.floor(Math.random()*100000000);
  77.         
  78.     }
  79.     
  80.     /*
  81.      * sendAnalyticusTag
  82.      * action_id params must be: 1,2 or 4
  83.      * 0: FTL
  84.      * 1:  (First Time Logging)
  85.      * 2: Daily Active User Tag
  86.      * 4: Disable Toolbar Extension (if you see uninstall procedure, see UninstallObserver into the 1clickweather.js file)
  87.      */
  88.     this.sendAnalyticusTag = function(action_id){
  89.         
  90.         //alert("action_id is " + action_id);
  91.         
  92.         var req = new XMLHttpRequest();
  93.         
  94.         // testing purpose
  95.         //req.onreadystatechange = "if(this.readyState==4 && this.status ==200){alert('sendAnalyticusTags reached');}";
  96.         
  97.         // prepare tracking call
  98.         this.trackingCall = this.trackingUrl + this.product_id + "/" + action_id + "?id=" + GlobalUserConfig.getInfo().getUserId() + "&rnd=" + this.calculateRandomNumber();
  99.         //alert("I will call to " + this.trackingCall);
  100.         req.open('GET', this.trackingCall, false);
  101.         req.send(null); 
  102.         
  103.         // save last daily update tracking
  104.         if(action_id==2){
  105.             var d  = new Date();
  106.             GlobalUserConfig.getInfo().setLastDUT(d.getTime());
  107.             GlobalUserConfig.save();
  108.             //alert("configuration saved");
  109.         }
  110.     }
  111.     
  112.     
  113.     
  114.     // This method check if daily update tracking is needed.
  115.     // Get last daily update tracking from user config and
  116.     // compare with the actual date.
  117.     // If is neccesary, call to sendAnalyticusTag(2) to update
  118.     // track.
  119.     this.DailyUpdateTracking = function(){
  120.         
  121.         // get last date tracking from configuration file
  122.         var original = new Date();
  123.         original.setTime(GlobalUserConfig.getInfo().getLastDUT());
  124.         
  125.         // prepare next update time
  126.         var nextDate = new Date();
  127.         // nextDate.setFullYear(original.getFullYear(), original.getMonth(),original.getDate());
  128.         nextDate.setTime(nextDate.getTime());
  129.         
  130.         if(Math.ceil((nextDate.getTime() - original.getTime())/(24*60*60*1000)) > 1) // update
  131.         {
  132.             // alert("update DUT");
  133.             var track= new weather_trackingSystem();
  134.             track.sendAnalyticusTag(2); // Daily user tracking
  135.         }
  136.     }
  137.  
  138.     // This function call to 17/1 tag. Implement a flag to permit 
  139.     this.DataPullTracking = function(){
  140.     
  141.         if(weather_trackingSystem.dataPullTrackingFlag == true){
  142.             this.sendAnalyticusTag(1);
  143.             weather_trackingSystem.dataPullTrackingFlag = false;
  144.             setTimeout(setDataPullTrackingFlag, 6000);
  145.         }
  146.     }
  147.     
  148. } // End Off Tracking System class
  149.  
  150.  
  151. function setDataPullTrackingFlag(){
  152.     weather_trackingSystem.dataPullTrackingFlag = true;
  153. }
  154.  
  155. // Static member
  156. weather_trackingSystem.dataPullTrackingFlag = true;
  157.  
  158.  
  159.  
  160.  
  161.  
  162.